var path=require('path');
var webpack=require('webpack');
var HtmlWebpackPlugin=require('html-webpack-plugin');
var ExtractTextWebpackPlugin=require('extract-text-webpack-plugin');
var PurifyCssWebpack=require('purifycss-webpack');
var glob=require('glob');
var CleanWebpackPlugin=require('clean-webpack-plugin');


module.exports={
    //单文件入口
    entry:'./src/index.js',
    output:{
        filename:'bundle.js',
        path:path.resolve('dist')
    },
    //多文件入口，不同打包文件
    // entry:{
    //     index:'./src/index.js',
    //     login:'./src/login.js'
    // },
    // output:{
    //     filename:'[name].[hash:4].js',
    //     path:path.resolve('dist')
    // },
    //多文件入口，只打包一个文件
    // entry:['./src/index.js','./src/login.js'],
    // output:{
    //     filename:'bundle.js',
    //     path:path.resolve('dist')
    // },
    module:{
        rules:[
            // {
            //     test:/\.css$/,
            //     use:['style-loader','css-loader']
            // }
            {
                test:/\.css$/,
                use:ExtractTextWebpackPlugin.extract({
                    fallback:'style-loader',
                    use:[
                        {loader:'css-loader'},
                        {loader:'postcss-loader'}
                        ],
                    publicPath:'../'
                })
            },
            //配置less
            {
                test:/\.less$/,
                use: ExtractTextWebpackPlugin.extract({
                    fallback:'style-loader',
                    use:['css-loader','less-loader']
                })
            },
            {
                test:/\.(sass|scss)$/,
                use:ExtractTextWebpackPlugin.extract({
                    fallback:'style-loader',
                    use:['css-loader','sass-loader']
                })
            },
            {
                test:/\.(jpe?g|png|gif)$/i,
                use:[
                    {
                        loader:'url-loader',
                        options:{
                            limit: 8192,    // 小于8k的图片自动转成base64格式，并且不会存在实体图片
                            outputPath: './images/'   // 图片打包后存放的目录
                        }
                    }
                ]
            },
            {
                test:/\.js$/,
                use:'babel-loader',
                include:/src/,
                exclude:/node_modules/
            }
        ]
    },
    plugins:[
        new CleanWebpackPlugin('dist'),
        //单页面配置HTML模板
        new HtmlWebpackPlugin({
            template:'./src/index.html',
            hash:true,
        }),

        //css拆分插件
        new ExtractTextWebpackPlugin('css/style.css'),
        //自动消除冗余代码
        new PurifyCssWebpack({ //消除冗余代码
            // 首先保证找路径不是异步的,所以这里用同步的方法
            // path.join()也是path里面的方法,主要用来合并路径的
            // 'src/*.html' 表示扫描每个html的css
            paths:glob.sync(path.join(__dirname,'src/*.html'))
        })


        // //多页面配置HTML模板
        // new HtmlWebpackPlugin({
        //     template:'./src/index.html',
        //     filename:'index.html',
        //     title:'index文件',
        //     chunks:['index'],
        //     hash:true
        // }),
        // new HtmlWebpackPlugin({
        //     title:'login文件',
        //     template:'./src/index.html',
        //     filename:'login.html',
        //     chunks:['login'],
        //     hash:true
        // })
    ]

}